package com.xp.service;

import com.xp.entity.User;
import com.xp.utils.Result;

/**
 * 认证服务接口
 * 
 * @author AI Assistant
 * @since 2024-01-01
 */
public interface AuthService {

    /**
     * 用户登录
     * 
     * @param username 用户名
     * @param password 密码
     * @param clientIp 客户端IP
     * @return 登录结果
     */
    Result<Object> login(String username, String password, String clientIp);

    /**
     * 用户登出
     * 
     * @param token JWT Token
     * @return 登出结果
     */
    Result<Object> logout(String token);

    /**
     * 获取当前用户信息
     * 
     * @param token JWT Token
     * @return 用户信息
     */
    Result<User> getCurrentUser(String token);

    /**
     * 验证Token
     * 
     * @param token JWT Token
     * @return 是否有效
     */
    boolean validateToken(String token);

    /**
     * 刷新Token
     * 
     * @param token 旧Token
     * @return 新Token
     */
    Result<Object> refreshToken(String token);

    /**
     * 检查Token是否在黑名单中
     * 
     * @param token JWT Token
     * @return 是否在黑名单中
     */
    boolean isTokenBlacklisted(String token);
}